Viewing Images At its heart, JPEGView is a simple image viewer, designed to provide a high-quality screen image in as little time and with as little fuss as possible. Opening images for viewing is as simple as with most any other Macintosh application: select the Open… item from the File menu (or type ⌘O), choose your image file in the dialog box, and let JPEGView do the rest. Closing an image just requires clicking in the close box or choosing Close from the File menu (⌘W). In this way, JPEGView works just as you’d expect. However, there are many additional options available to allow even easier navigation through your files, all of which are described in detail below. Opening images, with and without previews When you choose Open… from the File menu, what you get back is not the usual dialog you’re used to. Of course, all the basic features are still there, but in this case there are two important additions: the “Show Preview” checkbox and the “Scan & Fix Image File Types” button. If you’ve used QuickTime applications before, you have undoubtedly encountered the Show Preview option in your Open dialogs. The principle is simple: in QuickTime-compatible PICT and movie files, a preview image (sometimes called a thumbnail) can be stored in the file. This image is simply a small (usually about 80 pixels square) representation of the full image contained in the file. This allows you to see in advance what you will get once you open the image file, before having to open it and wait through the full decompression of the image inside. To turn the previewing feature on, simply check the “Show Preview” box beneath the file list. In response, the Open dialog will expand horizontally to include a new Preview area, where these small preview images will be displayed. Once you have done this, you can view the preview stored in a PICT file with just a single click on the name of the file in the list. If the file you select has a preview, it will be read from disk and displayed in the Preview area (give it a second or so to appear). If the “Show Preview” box is checked and you highlight a PICT image which has no preview, the “Create” button beneath the Preview area will become active, allowing you to automatically create a preview for that image inside the Open dialog! Occasionally, when you select an image file, the “Create” button will change to an “Update” button — this means that the preview stored with the image isn’t up-to-date. To remedy the situation, click on the button to create an updated preview. Finally, if you do not wish to see previews anymore — they can be slow at times — you can always uncheck the “Show Preview” box, which will return the Open dialog to its normal, skinnier size. QuickTime handles the job of remembering whether you checked this box the last time you used it, so that the next time you run a QuickTime application (including JPEGView), this option will be left as you last set it. How to see images that don’t appear in the file list Sometimes you may receive a file that JPEGView doesn’t immediately recognize as a valid image file. This is especially true if you have copied an image from a BBS or from another type of machine. In order to draw up the list of files as quickly as possible, JPEGView initially checks only the Finder’s file type information. Although this works quickly, it is possible (and sometimes inevitable) that the Finder’s information about a file is incorrect. For example, when you double click on such an image, the Finder doesn’t know what to do with it, or which application it should use to open the file with. So how do you get JPEGView to recognize these other files? This is where the “Scan & Fix Image File Types” button comes into play. Clicking on this button does two things: first, it checks all the files in the folder you are currently viewing for valid images. In order to make sure the Finder isn’t lying, JPEGView actually opens each file and peeks inside at the contents. This works well, but be forewarned: if there are a lot of files, it can take some time! After it has finished checking all the files, JPEGView then goes through the list and fixes the Finder’s information about these files. This means that in the future, the files that were found will appear in the Open dialog without any further intervention on your part. Plus, when you double click on these “fixed” files, JPEGView will automatically load and open them for you. (If you have the folder visible on the desktop, you will see the icons for these files change to JPEGView icons after several seconds.) Under certain circumstances, it is possible that the Finder’s file type information cannot be changed. For example, if your incorrectly identified files are all on CD-ROM, there is no way to modify the information contained on the disc. To allow you to view such files under these circumstances, JPEGView has an Import… option, also available under the File menu (or you can hold down the option key as you type ⌘O). This will give you a dialog identical to the Open dialog, only showing every file available, regardless of what the Finder has to say about it. Of course, files you choose here must still be recognizable by JPEGView, but at least they are all visible. What happens to the images when they’re opened Once you’ve chosen an image file in the Open dialog, JPEGView loads the file into memory and immediately attempts to verify that the file does in fact represent a valid image (remember that the Finder isn’t always correct!) If the image passes this test, but its Finder information was incorrect, JPEGView will quietly fix this for you, to help keep everything in order. (Note that this option can be turned off; see the Preferences Settings section for more details.) The image is then decompressed and displayed on your screen. During the decompression (unless two-pass quantization is set as the default — see Colors and Quantization for details), the bottom right-hand corner of the image’s window will display a progress percentage, keeping you informed of how far along JPEGView is in expanding the image data. Additionally, JPEGView indicates when it is performing a scaling or dithering operation by adding a “Scaling…” or “Dithering…” indicator as appropriate before the progress percentage. An important distinction between JPEGView and nearly every other image viewer available is the fact that JPEGView automatically shrinks large images so that they fit on your screen without any distortion. This is important not only because it allows you to always see the full image at one glance but also because you can easily select the area of interest when you do decide to zoom in and look at the details. It also means that you don’t lose the extra area taken up by scroll bars, which is an important consideration for those with 12” and 13” monitors. The amount of time it takes to decompress a given image can vary widely, from under a second for a small GIF image to over three minutes for a huge JPEG image. In general, expect GIF images to decode faster than JPEG images of the same size. JPEGView has been designed to give you nearly optimal speed for all compression methods — GIF, JPEG, and all the various QuickTime-based compression methods. For images which fit on your screen without scaling, you can expect JPEGView to perform extremely quickly. If scaling or two-pass quantization is required, JPEGView gives slower, though still very acceptable times. Fast and slow window updating Memory requirements for most image viewers are stiff, usually on the order of several megabytes for even reasonably sized JPEG files. This is because they require you to give them enough memory to decompress the whole image at once and store it offscreen for future use. While this may be simple and fast for scrolling around, if you try opening more than a couple of decent sized JPEGs you may be wondering why 20 megabytes of RAM doesn’t seem like so much anymore. Once again, JPEGView takes a different approach. Internally, the workings of JPEGView’s memory management are a little complicated, but on the surface you rarely need to worry about them. The primary effect of this procedure is the division of window updates into fast and slow updates, which basically describe how fast JPEGView restores the contents of its obscured or discolored windows. Here’s how it all works: When JPEGView first loads an image, it attempts to create an offscreen copy (or offscreen bitmap) of what you see on the screen (note that the size of this bitmap is always less than or equal to the size of the original image, which is what other viewers require of you!) If there isn’t enough memory available to do that, it’s all right: JPEGView can do without it. But if there is enough memory, this offscreen bitmap allows JPEGView to redraw obscured portions of that image’s window instantly. This is known as “fast updating,” and can only be achieved if there is an offscreen copy of what you see on the screen available in memory. Notice that JPEGView does not require this offscreen copy. This is important, because when JPEGView realizes that it needs more memory, it will cheerfully get rid of enough of these offscreen bitmaps to make room for other, more important things, such as quantization tables and other compressed images. If you free up enough memory in the future, JPEGView will quietly re-create these offscreen copies, but until then such images are resigned to using “slow updating,” which means they have to be decompressed to be displayed again. When part of such a window needs to be updated, it is blanked out until JPEGView decides there is time to do the slow update. Of course, all this happens behind your back, so you never need to worry about it. What you actually see are these fast updates and slow updates. Fast updates always occur immediately, for example when you uncover part of a hidden window or when balloon help obscures the window. In contrast, slow updates — because at times they can be really slow — are saved and remembered for later, so that if you’re in a rush and know what you want to do, you do not need to wait for them to happen. JPEGView detects this by waiting until you leave it alone for five seconds. Once you do this, it will begin updating the slow windows one at a time, from frontmost to backmost, waiting two and a half seconds between each to let you do something else. Switching between JPEGView’s windows With JPEGView’s sparse memory requirements, it is possible to have many images open at once, even with only a few megabytes of RAM available. In order to facilitate movement between these different windows, JPEGView has several useful windowing commands, as well as a slide show option — described in a later section — that cycles through all the images in memory. With the exception of the slide show, all of JPEGView’s window navigation commands can be found in the Windows menu. The most direct way to bring a given image’s window to the front (apart from clicking on the window itself) is by selecting it from the Windows menu. As you open images in JPEGView, their window titles are added to the bottom of the Windows menu for immediate access to every image currently in memory. Additionally, the first nine windows added to this list are assigned to the keyboard shortcuts ⌘1 through ⌘9, for even faster switching. You can quickly identify which window is currently frontmost by looking for the entry in the list with a checkmark beside it. In addition to an entry for each open window, the Windows menu contains the Next (⌘+) and Previous (⌘-) items. With these two options you can cycle forward and backward through the list of open images. Finally, the topmost item in the Windows menu is the Statistics item, which brings the JPEGView Statistics window into view, displaying detailed information about the frontmost image. All the information shown in this window is explained in the section Image Statistics: What They Mean. Putting things away Once you’ve mastered the art of window navigation, getting rid of the images seems a rather simple excercise. As you would expect, the close box on the window, the Close item in the File menu, and the ⌘W shortcut all close the frontmost window, releasing any memory used by the associated image. Further, the convenient Close All option (⌘K or Option-⌘W) quickly closes up all open image windows — but not the Statistics or the Help window. This allows you to keep those windows open and available at all times, even letting you close all the image windows while they are the active window. You can also close all active images by holding down the Option key as you click in the close box on one of the windows.